#ifndef RHYTHM_HPP
#define RHYTHM_HPP

#include <QString>
#include <QDateTime>
#include <QJsonObject>
#include <QUuid>

/**
 * @brief 节拍结构体，包含节点信息、名称、开始时间、结束时间和持续时间
 */
struct Rhythm {
    QString id;
    int folder;
    QString node;          ///< 节点信息
    QDateTime startTime;   ///< 开始时间（如 "2024-12-17 14:20:41.019"）
    QDateTime endTime;     ///< 结束时间（如 "2024-12-17 14:20:42.075"）
    double duration;       ///< 持续时间（计算结果）

    // 默认构造函数
    Rhythm()
        : id(QUuid::createUuid().toString()), folder(0), node(""), startTime(), endTime(), duration(0.0) {}

    // 参数化构造函数
    Rhythm(const int& folder_, const QString &node_, const QDateTime &startTime_, const QDateTime &endTime_, double duration_)
        : id(QUuid::createUuid().toString()), folder(folder_), node(node_), startTime(startTime_), endTime(endTime_), duration(duration_) {}

    /**
     * @brief 将 Rhythm 转换为 QJsonObject
     * @return QJsonObject 包含 Rhythm 数据的 JSON 对象
     */
    QJsonObject toJson() const {
        QJsonObject obj;
        obj["folder"] = folder;
        obj["node"] = node;
        obj["startTime"] = startTime.toString("yyyy-MM-dd hh:mm:ss.zzz");
        obj["endTime"] = endTime.toString("yyyy-MM-dd hh:mm:ss.zzz");
        obj["duration"] = duration;
        return obj;
    }
};

Q_DECLARE_METATYPE(Rhythm)

#endif // RHYTHM_HPP
